'''
    set集合的特征：{元素1,元素2,元素3,... }
    被称为集合，是无序的，
    并且
    *集合中的元素是唯一的。* 
    集合是可变的，
    但集合中的元素是不可变的。
    set集合常用方法：
    s.add(x)：将元素x添加到集合s中。
    s.remove(x)：将元素x从集合s中删除，如果元素x不存在，则会报错。
    s.discard(x)：将元素x从集合s中删除，如果元素x不存在，则不会报错。
    s.pop()：删除集合s中的一个随机元素，并返回该元素。如果集合为空，则会报错。
    s.clear()：清空集合s中的所有元素。
    s.copy()：返回集合s的一个浅拷贝。浅拷贝就是将集合s中的元素复制到一个新的集合中，但是新集合中的元素是原来集合中的元素的引用也就是说新集合中的元素和原来集合中的元素是同一个对象。
'''
#1.定义集合
s1 = {1,2,3,4,5}
print(s1,type(s1))

#2.遍历集合
for index,i in enumerate(s1): # enmrate()函数可以将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列，同时列出数据和数据下标，一般用在 for 循环当中。
    print(index,i) # 输出i的值，i的类型是int
print("="*50) # 输出分隔符，分隔符是50个等号

#3.通过下标来操作
# print(s1[0]) # 报错，集合是无序的，不能通过下标来操作

#4.添加元素
s1.add(6) # 添加元素6到集合s1中，注意：集合中的元素是唯一的，所以如果添加的元素已经存在，就不会添加成功。
print(s1) # 输出集合s1，集合s1中的元素是1,2,3,4,5,6
#不能用append()方法来添加元素，因为append()方法是用于列表添加的，集合是无序的只能追加，不能通过下标来操作。
s1.add(3) # 添加元素3到集合s1中，注意：集合中的元素是唯一的，所以如果添加的元素已经存在，就不会添加成功。
print(s1) # 输出集合s1，集合s1中的元素是1,2,3,4,5,6

#5.删除元素
#5.1删除指定元素
s1.remove(3) # 删除集合s1中的元素3，注意：如果删除的元素不存在，就会报错。
print(s1) # 输出集合s1，集合s1中的元素是1,2,4,5,6
#s1.remove(7) # 删除集合s1中的元素7，注意：如果删除的元素不存在，就会报错。
#print(s1) # 输出集合s1，集合s1中的元素是1,2,4,5,6

#5.1删除随机元素
s1.pop() # 删除集合s1中的随机元素，注意：如果集合为空，就会报错。
print(s1) # 输出集合s1，集合s1中的元素是1,2,4,5,6
#新的集合
ss={"abc",True,"hello",10.5,(55.333,"GGbb"),False,33,"H",(33.333,"GG")}
result=ss.pop() # 删除集合ss中的随机元素，注意：如果集合为空，就会报错。
print(result,type(result)) # 输出集合ss，集合ss中的元素是1,2,4,5,6

#6.删除指定元素discard（）方法：是用于删除集合中的指定元素，如果指定的元素不存在，就不会报错。
ss.discard(True) # 删除集合s1中的元素3，注意：如果删除的元素不存在，也不会报错。
print(ss) # 输出集合s1，集合s1中的元素是1,2,4,5,6




